home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2008 September
/
PCWorld_2008-09_cd.bin
/
v cisle
/
sadanastroju
/
wot-20080519-fx.xpi
/
chrome
/
wot.jar
/
skin
/
include
/
settings.js
< prev
Wrap
Text File
|
2008-04-21
|
17KB
|
723 lines
/*
settings.js
Copyright ⌐ 2007 Against Intuition, Inc. <info@mywot.com>
*/
/* Globals */
var selected = null;
var changes = false;
var warning_custom_allowed = false;
var apps = [ 0, 1, 2, 4 ];
/* Buttons */
function update_buttons()
{
$$('.button').each(function(button, i) {
if (changes) {
button.removeClass('disabled');
} else {
button.addClass('disabled');
}
});
}
/* Navigation */
function setpage()
{
if ($('loading-page').getStyle('display') != 'none') {
return;
}
selected = null;
$$('.page').each(function(page, i) {
if (window.location.hash + '-page' == '#' + page.id) {
selected = page.id;
} else {
page.setStyle('display', 'none');
}
});
if (!selected || selected == 'loading-page') {
selected = 'ratings-page';
}
var hash = selected.replace('-page', '');
$(selected).setStyle('display', 'block');
window.location.hash = '#' + hash;
$$('.tab').each(function(tab, i) {
if (tab.id == 'tab-' + hash) {
tab.addClass('selected');
} else {
tab.removeClass('selected');
}
});
$('settings').setProperty('class', hash);
update_buttons();
init_forms(selected);
}
/* Sample iframes */
function switch_sample(base, current, hidden, src)
{
var ready = ($(hidden).getProperty('src') == src);
if (!ready) {
$(hidden).setProperty('src', src);
if (selected == base) {
window.setTimeout(function() {
$(hidden).setStyle('display', 'block');
$(current).setStyle('display', 'none');
}, 500);
return;
}
}
$(hidden).setStyle('display', 'block');
$(current).setStyle('display', 'none');
}
function set_sample(base, src)
{
var current = base + '-sample-0';
var hidden = base + '-sample-1';
if ($(current).getStyle('display') == 'none') {
current = hidden;
hidden = base + '-sample-0';
}
if ($(current).getProperty('src') != src) {
switch_sample(base, current, hidden, src);
}
}
function update_samples()
{
var src = 'chrome://wot/locale/sample.html?';
if ($('use_search_level').checked) {
src += 'negative';
}
set_sample('searching', src);
if ($('show_search_popup').checked) {
src += 'popup';
apps.slice(1).each(function(i, j) {
if (!$('show_application_' + i).checked) {
src += 'r' + i;
}
});
}
set_sample('popup', src);
}
/* Warnings */
function update_warnings()
{
apps.slice(1).each(function(i, j) {
$('warnings-slider-' + i).setStyle('display',
($('show_application_' + i).checked) ? 'block' : 'none');
});
update_warnings_preset();
}
/* Warning presets */
var warning_levels = [ 19, 39, 59 ];
var warning_type_none = 0;
var warning_type_notification = 1;
var warning_type_warn = 2;
var warning_type_block = 3;
var warning_type_default = warning_type_warn;
var warning_presets = [
{
id: 'none',
levels: [ 0, 0, 0, 0 ],
unknowns: [ false, false, false, false ],
types: [ warning_type_none, warning_type_none, warning_type_none, warning_type_none ]
}, {
id: 'moderate',
levels: [ warning_levels[0], warning_levels[0], warning_levels[0], 0 ],
unknowns: [ false, false, false, false ],
types: [ warning_type_warn, warning_type_warn, warning_type_warn, warning_type_none ]
}, {
id: 'normal',
levels: [ warning_levels[1], warning_levels[1], warning_levels[1], 0 ],
unknowns: [ false, false, false, false ],
types: [ warning_type_warn, warning_type_warn, warning_type_warn, warning_type_none ]
}, {
id: 'effective',
levels: [ warning_levels[2], warning_levels[2], warning_levels[2], 0 ],
unknowns: [ false, false, false, false ],
types: [ warning_type_warn, warning_type_warn, warning_type_warn, warning_type_none ]
}
];
function change_warning_type_default(type)
{
for (var i = 0; i < warning_presets.length; ++i) {
for (var j = 0; j < warning_presets[i].types.length; ++j) {
if (warning_presets[i].types[j] != warning_type_none &&
warning_presets[i].types[j] != warning_type_block) {
warning_presets[i].types[j] = type;
}
}
}
apps.each(function(i, j) {
var input = $('warning_type_' + i);
var current = Number(input.getProperty('value'));
if (current != warning_type_none &&
current != warning_type_block) {
input.setProperty('value', type);
}
});
warning_type_default = type;
update_warnings_preset();
}
function update_warnings_notification()
{
var type = warning_type_warn;
apps.each(function(i, j) {
var input = $('warning_type_' + i);
var current = Number(input.getProperty('value'));
if (current == warning_type_notification) {
type = current;
}
});
$('warnings-type-notification').setProperty('checked',
(type == warning_type_notification));
change_warning_type_default(type);
}
function toggle_warnings_notification()
{
if ($('warnings-type-notification').checked) {
change_warning_type_default(warning_type_notification);
} else {
change_warning_type_default(warning_type_warn);
}
}
function select_warnings_preset(id)
{
$('warnings-level-' + id).setProperty('checked', true);
$$('.warnings-help').each(function(item, j) {
item.setStyle('display', 'none');
});
$('warnings-help-' + id).setStyle('display', 'block');
init_forms(selected);
}
function update_warnings_preset()
{
var match = false;
for (var i = 0; i < warning_presets.length; ++i) {
match = true;
apps.each(function(j, k) {
if (j > 0 && !$('show_application_' + j).checked) {
return;
}
if (Number($('warning_level_' + j).getProperty('value')) !=
warning_presets[i].levels[k]) {
match = false;
return;
}
if ($('warning_unknown_' + j).checked !=
warning_presets[i].unknowns[k]) {
match = false;
return;
}
if (Number($('warning_type_' + j).getProperty('value')) !=
warning_presets[i].types[k]) {
match = false;
return;
}
});
if (match) {
select_warnings_preset(warning_presets[i].id);
break;
}
}
if (!match) {
select_warnings_preset('custom');
}
return match;
}
function set_warnings_preset(id)
{
var match = false;
for (var i = 0; i < warning_presets.length; ++i) {
if (('warnings-level-' + warning_presets[i].id) != id) {
continue;
}
apps.each(function(j, k) {
$('warning_level_' + j).setProperty('value',
warning_presets[i].levels[k]);
$('warning_unknown_' + j).checked =
warning_presets[i].unknowns[k];
$('warning_type_' + j).setProperty('value',
warning_presets[i].types[k]);
});
match = true;
select_warnings_preset(warning_presets[i].id);
break;
}
if (!match) {
update_warnings_preset();
}
update_warnings_sliders();
}
/* Warning customization */
function update_warnings_sliders()
{
apps.each(function(i, j) {
var slider = $('warnings-slider-' + i);
var level = Number($('warning_level_' + i).getProperty('value'));
var type = Number($('warning_type_' + i).getProperty('value'));
[ 0, 1, 2 ].each(function(k, l) {
if (type != warning_type_none && level >= warning_levels[k]) {
slider.addClass('level-' + k);
} else {
slider.removeClass('level-' + k);
}
});
if (type == warning_type_block) {
$('warnings-type-' + i + '-stack').addClass('blocking');
$('warnings-type-' + i + '-stack').removeClass('warning');
} else {
$('warnings-type-' + i + '-stack').addClass('warning');
$('warnings-type-' + i + '-stack').removeClass('blocking');
}
});
}
function update_warning_type(i)
{
var level = Number($('warning_level_' + i).getProperty('value'));
var unknown = $('warning_unknown_' + i).checked;
var type = Number($('warning_type_' + i).getProperty('value'));
var set = type;
if (level > 0 || unknown) {
if (type == warning_type_none) {
set = warning_type_default;
}
} else if (type != warning_type_none) {
set = warning_type_none;
}
if (type != set) {
$('warning_type_' + i).setProperty('value', set);
update_warnings_preset();
update_warnings_sliders();
return true;
}
return false;
}
function set_warnings_slider(i, level)
{
$('warning_level_' + i).setProperty('value', level);
if (!update_warning_type(i)) {
update_warnings_preset();
update_warnings_sliders();
}
changes = true;
update_buttons();
}
function increase_warnings_slider(i)
{
var type = Number($('warning_type_' + i).getProperty('value'));
var level = Number($('warning_level_' + i).getProperty('value'));
var set = warning_levels[2];
if (type == warning_type_none || level < warning_levels[0]) {
set = warning_levels[0];
} else if (level < warning_levels[1]) {
set = warning_levels[1];
}
set_warnings_slider(i, set);
}
function decrease_warnings_slider(i)
{
var level = Number($('warning_level_' + i).getProperty('value'));
var set = 0;
for (var j = 2; j >= 0; --j) {
if (level > warning_levels[j]) {
set = warning_levels[j];
break;
}
}
set_warnings_slider(i, set);
}
function toggle_warnings_type(i)
{
var type = Number($('warning_type_' + i).getProperty('value'));
var set = warning_type_default;
if (type != warning_type_block) {
set = warning_type_block;
}
$('warning_type_' + i).setProperty('value', set);
if (type == warning_type_none) {
set_warnings_slider(i, warning_levels[0]);
} else {
update_warnings_preset();
update_warnings_sliders();
changes = true;
update_buttons();
}
}
function toggle_warnings_unknown(i)
{
if (!update_warning_type(i)) {
update_warnings_preset();
}
}
/* Forms */
var forms_inited = false;
function init_forms(container)
{
var elems = 'input';
if (container) {
elems = '#' + container + ' ' + elems;
} else if (forms_inited) {
return;
}
forms_inited = true;
$$(elems).each(function(input, i) {
var type = input.getProperty('type');
if (type != 'checkbox' && type != 'radio') {
return;
}
var label = null;
$$('label').each(function(item, j) {
if (item.getProperty('for') == input.id) {
label = item;
}
});
if (!label) {
return;
}
input.addClass('replaced');
label.addClass(type);
if (input.checked) {
label.addClass('checked');
} else {
label.removeClass('checked');
}
if (!container) {
label.addEvent('click', function() {
if (this.hasClass('checkbox')) {
this.toggleClass('checked');
} else if (this.hasClass('radio')) {
var box = $(this.getProperty('for'));
clear_radios(box.getProperty('name'));
this.addClass('checked');
}
changes = true;
update_buttons();
});
}
});
}
function clear_radios(name)
{
$$('label.radio').each(function(item, i) {
var input = $(item.getProperty('for'));
if (!input || (name && input.getProperty('name') != name)) {
return;
}
item.removeClass('checked');
});
}
/* Page initialization */
var rating_preview_height = 60;
function init_ratings()
{
apps.slice(1).each(function(a, i) {
var item = $('show_application_' + a);
item.addEvent('click', function() {
init_forms(selected);
if (item.checked) {
new Fx.Style('ratings-preview-' + i, 'height', {
duration: 500,
transition: Fx.Transitions.quadInOut,
onStart: function() {
$('ratings-preview-' + i).setStyle('height', 0);
$('ratings-preview-' + i).setStyle('display', 'block');
},
onComplete: function() {
update_warnings();
update_samples();
}
}).start(0, rating_preview_height)
} else {
new Fx.Style('ratings-preview-' + i, 'height', {
duration: 500,
transition: Fx.Transitions.quadInOut,
onComplete: function() {
$('ratings-preview-' + i).setStyle('display', 'none');
update_warnings();
update_samples();
}
}).start(rating_preview_height, 0);
}
});
if (!item.checked) {
$('ratings-preview-' + i).setStyle('display', 'none');
}
});
}
function init_warnings()
{
var level = $('wotlevel').getProperty('level');
if (level && level == "registered") {
warning_custom_allowed = true;
}
if (!warning_custom_allowed) {
var cover = $('warnings-custom-cover');
cover.setStyle('display', 'block');
cover.addEvent('click', function() {
showmessage('custom');
});
$('warnings-level-custom').addEvent('click', function() {
showmessage('custom');
update_warnings_preset();
});
} else {
$('warnings-level-custom').addEvent('click', function() {
select_warnings_preset('custom');
});
$('warnings-registered').setStyle('display', 'none');
}
update_warnings_notification();
update_warnings_preset();
update_warnings_sliders();
for (var i = 0; i < warning_presets.length; ++i) {
$('warnings-level-' + warning_presets[i].id).addEvent('click', function() {
set_warnings_preset(this.id);
});
}
apps.each(function(i, j) {
$('warnings-slider-' + i + '-increase').addEvent('click', function() {
increase_warnings_slider(i);
});
$('warnings-slider-' + i + '-decrease').addEvent('click', function() {
decrease_warnings_slider(i);
});
[ 0, 1, 2 ].each(function(k, l) {
$('warnings-slider-' + i + '-image-' + k).addEvent('click', function() {
set_warnings_slider(i, warning_levels[k]);
});
});
$('warnings-type-' + i + '-switch').addEvent('click', function() {
toggle_warnings_type(i);
});
$('warning_unknown_' + i).addEvent('click', function() {
toggle_warnings_unknown(i);
});
});
$('warnings-type-notification').addEvent('click', function() {
toggle_warnings_notification();
});
}
function init_searching()
{
var type = Number($('search_type').getProperty('value'));
[ 'optimized', 'worst', 'first' ].each(function(item, i) {
var elem = $('searching-type-' + item);
if (type == i) {
elem.setProperty('checked', true);
$('searching-help-' + item).setStyle('display', 'block');
}
elem.setProperty('wottype', i);
elem.addEvent('click', function() {
$('search_type').setProperty('value',
this.getProperty('wottype'));
$$('.searching-help-text').each(function(text, j) {
text.setStyle('display', 'none');
});
$('searching-help-' + item).setStyle('display', 'block');
});
});
$('use_search_level').addEvent('click', function() {
update_samples();
});
}
function init_popup()
{
$('show_search_popup').addEvent('click', function() {
update_samples();
});
}
function init_advanced()
{
var list = $('advanced-ignore-list');
list.setProperty('value', $('norepsfor').getProperty('value'));
var changed = function() {
$('norepsfor').setProperty('value',
$('advanced-ignore-list').getProperty('value'));
changes = true;
update_buttons();
};
list.addEvent('change', changed);
list.addEvent('keypress', changed);
}
/* Messages */
function showmessage(msg)
{
$(msg).setStyle('opacity', 0);
$(msg).setStyle('display', 'block');
$('messages').setStyle('display', 'block');
new Fx.Style(msg, 'opacity', {
duration: 250,
transition: Fx.Transitions.quadInOut
}).start(0, 0.9);
window.setTimeout(function() {
new Fx.Style(msg, 'opacity', {
duration: 500,
transition: Fx.Transitions.quadInOut,
onComplete: function() {
$$('.message').each(function(item, i) {
item.setStyle('display', 'none');
});
$('messages').setStyle('display', 'none');
}
}).start(0.9, 0);
}, 2500);
}
/* Callbacks */
function wotsettings_ready()
{
$('loading-page').setStyle('display', 'none');
/* Initialize */
init_forms();
init_ratings();
init_warnings();
init_searching();
init_popup();
init_advanced();
update_samples();
update_warnings();
/* Page */
setpage();
/* Tabs */
$$('.tab').each(function(tab, i) {
var location = '#' + tab.id.substr(4);
tab.addEvent('click', function() {
window.location.hash = location;
setpage();
});
});
/* Cancel */
$('cancel').addEvent('click', function() {
if (changes) {
window.location.reload();
}
});
}
function wotsettings_saved()
{
changes = false;
update_buttons();
showmessage('saved');
}
function wotsettings_failed()
{
showmessage('failed');
}